﻿namespace TripleA.Core.Interfaces
{
    using Entities;

    public interface IPipelineStep<T>
    {
        void PreValidate(T context);
        void Execute(T context);
        void PostValidate(T context);

        StepResult<T> GenerateResult(int index);

        PipelineStepSnapshot Dehydrate();


    }
}